﻿#include "snack.h"

// 获取光标位置
void SetPos(short x, short y)
{
	// 获取标准输出设备的句柄
	// HANDLE -> 指针类型 void*
	HANDLE houtput = NULL;
	houtput = GetStdHandle(STD_OUTPUT_HANDLE);

	// 设定光标的位置
	COORD pos = { x, y };
	SetConsoleCursorPosition(houtput, pos);
}

// 打印欢迎界面
void WelcomeToGame()
{
	SetPos(40, 14);
	wprintf(L"欢迎来到贪吃蛇小游戏\n");
	SetPos(42, 20);
	system("pause");// 暂停
	system("cls");  // 清理屏幕
	SetPos(25, 14);
	wprintf(L"用 ↑. ↓. ←. → 来控制蛇的移动，按F3加速，F4减速\n");
	SetPos(25, 15);
	wprintf(L"加速能够得到更高的分数\n");
	SetPos(40, 20);
	system("pause");// 暂停
	system("cls");  // 清理屏幕

}

// 创建地图
void CreatMap()
{
	// 上
	int i = 0;
	for (i = 0; i < 29; i++)
	{
		wprintf(L"%lc", L'□');
	}

	// 下
	SetPos(0, 26);
	for (i = 0; i < 29; i++)
	{
		wprintf(L"%lc", L'□');
	}

	// 左
	for (i = 1; i <= 25; i++)
	{
		SetPos(0, i);
		wprintf(L"%lc", L'□');
	}

	// 右
	for (i = 1; i <= 25; i++)
	{
		SetPos(56, i);
		wprintf(L"%lc", L'□');
	}

	getchar();
}

// 游戏的初始化
void GameStart(pSnack ps)
{
	// 0. 设置窗口大小和光标隐藏
	system("mode con cols=100 lines=30");
	system("title 贪吃蛇");
	HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);//获得句柄
	// 隐藏光标操作
	CONSOLE_CURSOR_INFO cursor_info = { 0 };// 定义一个光标信息的结构体
	GetConsoleCursorInfo(houtput, &cursor_info);// 获取和houtput句柄相关的控制台上的光标信息，存放在cursor_info中
	cursor_info.bVisible = false;// 修改光标的可见度
	SetConsoleCursorInfo(houtput, &cursor_info);// 设置和houtput句柄相关的控制台上的光标信息
	
	// 1.打印环境界面和功能介绍 
	WelcomeToGame();
	// 2.绘制地图 
	CreatMap();
	// 3.创建蛇 
	// 4.创建食物 
	// 5.设置游戏相关信息
}